package vo

// PositionInfo 主结构体，对应 Java 实体类
type PositionInfoVo struct {
	ID           string            `json:"id"`                // 主键 ID，对应 Java 中的 @TableId(type = IdType.ASSIGN_ID)
	ParentID     string            `json:"parentId" `         // 父级ID
	ContentJSON  string            `json:"contentJson" `      // 具体内容（JSON 字符串）
	Code         string            `json:"code" `             // 编码
	Name         string            `json:"name"`              // 名称
	PositionType string            `json:"positionType" `     // 位置类型
	ProductKey   string            `json:"productKey"`        // 产品Key
	Children     []*PositionInfoVo `json:"children" gorm:"-"` // 子结构列表
}

type PositionSvgModelVo struct {
	ID           *string `json:"id" gorm:"column:id;primaryKey"`           // 主键 ID
	CreateBy     *string `json:"createBy" gorm:"column:create_by"`         // 创建者
	CreateDept   *string `json:"createDept" gorm:"column:create_dept"`     // 创建部门
	CreateTime   *string `json:"createTime" gorm:"column:create_time"`     // 创建时间（时间戳）
	UpdateBy     *string `json:"updateBy" gorm:"column:update_by"`         // 更新者
	UpdateTime   *string `json:"updateTime" gorm:"column:update_time"`     // 更新时间（时间戳）
	PositionID   *string `json:"positionId" gorm:"column:position_id"`     // 位置ID
	PositionName *string `json:"positionName" gorm:"column:position_name"` // 位置名称
	PositionCode *string `json:"positionCode" gorm:"column:position_code"` // 位置编号
	DelFlag      *string `json:"delFlag" gorm:"column:del_flag"`           // 是否删除（Y/N）
	SvgContent   *string `json:"svgContent" gorm:"column:svg_content"`     // SVG内容
	SvgName      *string `json:"svgName" gorm:"column:svg_name"`           // 图纸名称
	SvgType      *string `json:"svgType" gorm:"column:svg_type"`           // 图纸类型
	FileUrl      *string `json:"fileUrl" gorm:"column:file_url"`           // 文件地址
}

type PositionSvgAttributeVo struct {
	ID             *string   `json:"id" gorm:"column:id;primaryKey"`               // 主键 ID
	CreateBy       *string   `json:"createBy" gorm:"column:create_by"`             // 创建者
	CreateDept     *string   `json:"createDept" gorm:"column:create_dept"`         // 创建部门
	CreateTime     *string   `json:"createTime" gorm:"column:create_time"`         // 创建时间（时间戳）
	UpdateBy       *string   `json:"updateBy" gorm:"column:update_by"`             // 更新者
	UpdateTime     *string   `json:"updateTime" gorm:"column:update_time"`         // 更新时间（时间戳）
	DelFlag        *string   `json:"delFlag" gorm:"column:del_flag"`               // 是否删除
	PositionID     *string   `json:"positionId" gorm:"column:position_id"`         // 位置ID
	SvgID          *string   `json:"svgId" gorm:"column:svg_id"`                   // SVG图纸ID
	DeviceID       *string   `json:"deviceId" gorm:"column:device_id"`             // 设备ID
	DeviceName     *string   `json:"deviceName" gorm:"column:device_name"`         // 设备名称
	DeviceDn       *string   `json:"deviceDn" gorm:"column:device_dn"`             // 设备DN
	SvgElement     *string   `json:"svgElement" gorm:"column:svg_element"`         // SVG节点元素
	Identifier     *string   `json:"identifier" gorm:"column:identifier"`          // 属性标识符
	SvgType        *string   `json:"svgType" gorm:"column:svg_type"`               // SVG节点类型
	Event          *bool     `json:"event" gorm:"column:event"`                    // SVG节点事件
	Value          *string   `json:"val" gorm:"column:val"`                        // 属性值
	Unit           *string   `json:"unit" gorm:"column:unit"`                      // 单位
	Options        []*Option `json:"options" gorm:"-"`                             // 设备状态事件列表
	OptionValue    *string   `json:"optionValue" gorm:"column:option_value"`       // 设备状态事件值
	OptionsContext *string   `json:"optionsContext" gorm:"column:options_context"` // 选项上下文
	GroupOptions   []*Option `json:"groupOptions" gorm:"-"`                        // 分组选项列表
	GroupValue     *string   `json:"groupValue" gorm:"column:group_value"`         // 分组值
	GroupContext   *string   `json:"groupContext" gorm:"column:group_context"`     // 位置分组内容
}

// Option 嵌套结构体
type Option struct {
	Show  *string `json:"show,omitempty"`
	Label *string `json:"label,omitempty"`
	Color *string `json:"color,omitempty"`
	Value *string `json:"value,omitempty"`
	Icon  *string `json:"icon,omitempty"`
}

type PositionDeviceInfoVo struct {
	ID          *string `json:"id" gorm:"column:id;primaryKey"`         // 主键 ID
	PositionID  *string `json:"positionId" gorm:"column:position_id"`   // 位置ID
	DeviceID    *string `json:"deviceId" gorm:"column:device_id"`       // 设备ID
	DeviceName  *string `json:"deviceName" gorm:"column:device_name"`   // 设备名称
	DeviceDn    *string `json:"deviceDn" gorm:"column:device_dn"`       // 设备DN
	ProductName *string `json:"productName" gorm:"column:product_name"` // 产品名称
	DocumentUrl *string `json:"documentUrl" gorm:"column:document_url"` // 产品文档URL
	Product     *string `json:"product" gorm:"column:product"`          // 产品标识符
}
